package Traductor.Lexico;

public class EstadoNoAceptacion implements Estado{
	
	//Atributos
	private String id;
	private Transicion[] transiciones;
	private String siguienteEstado;
	private boolean inicial;
	
	//Constructora
	public EstadoNoAceptacion(String id, Transicion... transiciones){
		super();
		this.id = id;
		this.transiciones = transiciones;
		this.siguienteEstado = "e0";
		this.inicial = false;
	}

	//Mutadora
	public void setInicial(boolean inicial){
		this.inicial = inicial;
	}

	//Accesoras
	public String getId(){
		return id;
	}

	public Token getToken(String lexema){
		return null;
	}

	public String getSiguienteEstado(){
		return siguienteEstado;
	}
	
	//Metodos
	public int transita(char siguiente){
		for(Transicion t: transiciones){
			String caracteres = t.getCaracteres();
			if((caracteres==null) || (caracteres.indexOf(siguiente)>-1)){
				siguienteEstado = t.getSiguienteEstado();
				return 1;
			}
		}
		// Caracter no reconocido - ERROR!!!
		return 0;
	}

	public boolean estadoInicial(){
		return inicial;
	}

}
